package com.sjz.myfrist.litepal;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;
import com.sjz.myfrist.R;

import org.litepal.LitePal;

import java.util.List;


/****
 * LitePal是一款开源的Android数据库框架，采用对象关系映射的模式，将我们平时开发常用的一些数据库功能进行了封装
 * 一、需要引入依赖，但是我依赖一直下载不下来  就直接使用的是litepal-2.0.0.jar
 * 二、new   ->    Directory ，创建一个名为assets的目录
 * litepal.xml
 * <dbname>标签用于指定数据库名，<version>用于指定数据库版本号，<list>用于指定所有的映射模型
 * 三、AndroidManifest.xml文件
 * <application
 *         android:name="org.litepal.LitePalApplication"  添加一行
 * </application>
 * 四、数据库版本升级
 * 修改litepal.xml 将版本号加1
 *  <version value="2"></version>
 *
 * 通过创建数据库  添加数据 查询数据 修改数据 查询数据  删除数据 查询数据来测试
 * 可以通过在logcat查看日志信息
 */
public class LitepalActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.litepal_db);


        //创建数据库
        Button createDatabase = findViewById(R.id.create_litepal_database);
        createDatabase.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // LitePal.getDatabase()方法就是创建数据库的方法。
                LitePal.getDatabase();
            }
        });

        //添加数据
        Button addData = findViewById(R.id.add_litepal_data);
        addData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Book book = new Book();
                book.setName("Android");
                book.setAuthor("zxy");
                book.setPages(521);
                book.setPrice(9.9);
                book.setPress("no");
                book.save();
            }
        });

        //更新
        //  调用setPrice()和setPress()方法设置要更新的数据，再调用updateAll()方法执行更新操作，如果不指定条件则默认更新所有数据。
        Button updateData = findViewById(R.id.update_litepal_data);
        updateData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Book book = new Book();
                book.setPrice(19.9);
                book.setPress("zzz");
                book.updateAll("name = ? and author = ?","Android","zxy");
            }
        });

        //查询
        //  findAll()方法查询所有字段信息，这里用List集合保存，然后用迭代器取出。
        Button queryButton = findViewById(R.id.query_litepal_data);
        queryButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                List<Book> books = LitePal.findAll(Book.class);
                for(Book book:books){
                    Log.d("LitepalActivity","book name is"+book.getName());
                    Log.d("LitepalActivity","price is"+book.getPrice());
                    Log.d("LitepalActivity","press is"+book.getPress());
                }
            }
        });


        //删除数据
        //deleteAll()方法如果不指定条件则默认删除所有数据。
        Button deleteButton = findViewById(R.id.delete_litepal_data);
        deleteButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LitePal.deleteAll(Book.class,"price < ?","20");
            }
        });

    }


}